package com.demo.java.OD51_100.OD70;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【靠谱的车】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145614050
 */
public class OdMain {
    public static void main(String[] args) {
        try {
            // 创建扫描器对象，读取输入
            Scanner s = new Scanner(System.in);

            // 读取输入的数字 N
            int line = s.nextInt();

            // 检查输入的数字是否在有效范围内
            if (line < 1 || line > 888888888) {
                System.out.println("input data error");
                return; // 如果输入不在有效范围，打印错误并返回
            }

            int count = 0; // 记录 '4' 替换为 '5' 的总变化量
            int index = 0; // 从 1 开始，逐个检查数字

            // 逐个判断从 1 到 line 的所有数字
            while (line > index) {
                int next = index + 1; // 当前检查的下一个数字
                String tmp = String.valueOf(next); // 将当前数字转换为字符串

                // 如果数字中包含字符 '4'
                if (tmp.contains("4")) {
                    // 将数字中的 '4' 替换为 '5'
                    String newTmp = tmp.replace('4', '5');
                    int newNumber = Integer.parseInt(newTmp); // 将替换后的字符串转换为整数
                    count += (newNumber - next); // 计算替换后的差值并累加到 count
                    index = newNumber; // 更新 index 为新的数字
                } else {
                    // 如果当前数字没有 '4'，直接向下一个数字进发
                    index = next;
                }
            }

            // 输出最后的结果，即数字总数减去所有替换的差值
            System.out.println(line - count);
        } catch (Exception e) {
            // 捕获任何异常并打印堆栈信息
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}
